package com.atguigu.java;

import java.util.Arrays;

/**
 * @author yihu
 * @create 2021-03-02 15:02
 * @email:1057202547@qq.com
 * @dec: 使用enum关键字定义枚举类
 *  *    说明：定义的枚举类默认继承于java.lang.Enum类
 *
 *
 *          三、Enum类中的常用方法：
 *  *  *    values()方法：返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
 *  *  *    valueOf(String str)：可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是，会有运行时异常：IllegalArgumentException。
 *  *  *    toString()：返回当前枚举类对象常量的名称
 */
public class SeasonTest1 {
    public static void main(String[] args) {
        Season1 summer = Season1.SUMMER;

        //调用了toString
        System.out.println(summer); //SUMMER

        //values
        Season1[] values = Season1.values();
        //[SPING, SUMMER, AUTUMN, WINTER]
        System.out.println(Arrays.toString(values));

        //valueOf(String objName):返回枚举类中对象名是objName的对象。
        //如果没有objName的枚举类对象，则抛异常：IllegalArgumentException
        //Season1 winter = Season1.valueOf("WINTER1");
        Season1 winter = Season1.valueOf("WINTER");
        System.out.println(winter); //WINTER
        winter.show();
    }
}


interface  Info{
    void show();
}

enum Season1 implements  Info{
    //1.提供当前枚举类的对象，多个对象之间用","隔开，末尾对象";"结束
    SPING("春天","春暖花开"){
        @Override
        public void show() {
            System.out.println("这是一个季节--春天");
        }
    },
    SUMMER("夏天","夏日炎炎"){
        @Override
        public void show() {
            System.out.println("这是一个季节--夏天");
        }
    },
    AUTUMN("秋天","秋高气爽"){
        @Override
        public void show() {
            System.out.println("这是一个季节--秋天");
        }
    },
    WINTER("冬天","冰天雪地"){
        @Override
        public void show() {
            System.out.println("这是一个季节--冬天");
        }
    };

    //2.声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDec;

    //3：私有化类的构造器
    private  Season1(String seasonName,String seasonDec){
        this.seasonDec = seasonDec;
        this.seasonName =seasonName;
    }

    //4.其他诉求1：获取枚举类对象的属性
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDec;
    }

//    @Override
//    public void show() {
//        System.out.println("这是一个季节");
//    }
}
